Assisting user in managing a calendar application

ABSTRACT

A method, system and computer program product for managing a calendar application. A need to optimize a calendar is identified. Furthermore, a period of time to optimize the calendar is received or identified. All the scheduled events (e.g., scheduled meetings) in the calendar are then selected during that period of time. The attendees, topics and flags, if any, for each of the selected scheduled events during the period of time are extracted. Prior collaborations with the user involving the extracted attendees and/or topics of the selected scheduled events are identified. Collaboration data (e.g., participants/senders/attendees, topics) is then extracted from the identified prior collaborations. A list of actions (e.g., delegate scheduled event to another user) is generated to be performed on a selected scheduled event based on the extracted collaboration data. The generated list of actions to be performed on the selected scheduled event is then presented to the user.

TECHNICAL FIELD

The present invention relates generally to calendaring systems, and moreparticularly to assisting the user in managing a calendar application.

BACKGROUND

Calendaring systems, in the simplest form, help users to organize theirtime. Additionally, calendaring systems may be used to schedulemeetings, appointments, vacations or other types of calendar events oractivities.

However, users may have difficulty in managing their calendar, which mayinclude numerous meetings, activities, etc. At times, some of thesescheduled events may overlap other scheduled events. Furthermore, someof these scheduled events may even be duplicates. As a result, users mayhave to spend time in determining how to address the overlapped orduplicate scheduled events resulting in loss of time and frustration.

Furthermore, if a user desires to take a vacation but there are numerouspreviously scheduled events during the time the user desires to take avacation, then the user will have to spend time in resolving theconflicts resulting in further loss of time and frustration.

Currently, calendaring systems do not assist the user in managing theuser's calendar to address such situations.

SUMMARY

In one embodiment of the present invention, a method for managing acalendar application comprises identifying a need to optimize acalendar, where the need is identified by a calendar client agentobtaining calendar information from a user's calendar information via acalendar application's application programming interface. The methodfurther comprises receiving or identifying a period of time to optimizethe calendar in response to identifying the need to optimize thecalendar, where the period of time is determined based on a period oftime the calendar client agent determined that a need existed tooptimize the calendar. The method additionally comprises selecting allscheduled events in the calendar during the period of time. Furthermore,the method comprises extracting attendees, topics and flags for eachselected scheduled event during the period of time. Additionally, themethod comprises identifying prior collaborations with a user of thecalendar involving the extracted attendees and topics of the selectedscheduled events. In addition, the method comprises extractingcollaboration data from the identified prior collaborations, where thecollaboration data comprises data concerning an interaction between theuser and others involving an activity, and where the collaboration datacomprises names of participants, senders and attendees in social mediaposts, e-mail messages, instant messages and previously scheduledcalendar events as well as topics of the identified priorcollaborations. The method further comprises generating a list ofactions to be performed on a scheduled event of the selected scheduledevents based on the extracted collaboration data. The methodadditionally comprises presenting the generated list of actions to theuser of the calendar to be performed on the scheduled event to the user.Furthermore, the method comprises determining whether the user selectedan action from the list of actions. Additionally, the method comprisesperforming an action on the scheduled event in response to the userselecting the action from the list of actions thereby improving afunctionality of calendaring systems by allowing the user to bettermanage the users' scheduled events in the user's calendar.

Other forms of the embodiment of the method described above are in asystem and in a computer program product.

The foregoing has outlined rather generally the features and technicaladvantages of one or more embodiments of the present invention in orderthat the detailed description of the present invention that follows maybe better understood. Additional features and advantages of the presentinvention will be described hereinafter which may form the subject ofthe claims of the present invention.

BRIEF DESCRIPTION OF THE DRAWINGS

A better understanding of the present invention can be obtained when thefollowing detailed description is considered in conjunction with thefollowing drawings, in which:

FIG. 1 illustrates a communication system configured in accordance withan embodiment of the present invention;

FIG. 2 illustrates a hardware configuration of a computing device inaccordance with an embodiment of the present invention;

FIG. 3 is a flowchart of a method for assisting the user in managing acalendar application in accordance with an embodiment of the presentinvention;

FIG. 4 illustrates multiple overlapped scheduled events in accordancewith an embodiment of the present invention; and

FIG. 5 illustrates presenting to the user of the calendar applicationthe option of delegating a scheduled event to another user in accordancewith an embodiment of the present invention.

DETAILED DESCRIPTION

The present invention comprises a method, system and computer programproduct for managing a calendar application. In one embodiment of thepresent invention, a calendar client agent identifies a need to optimizea calendar. For example, the client calendar agent may determine thatthere is a need to optimize the user's calendar based on detecting anoverlap of scheduled events. A period of time to optimize the calendaris received or identified by the client calendar agent (e.g., the periodof time in which the scheduled events overlap). Client calendar agentthen selects all the scheduled events (e.g., scheduled meetings,scheduled appointments) in the calendar during that period of time. Theattendees, topics and flags, if any, for each of these selectedscheduled events during the period of time are extracted by the calendarclient agent. Prior collaborations with the user involving the extractedattendees and/or topics of the selected scheduled events are identifiedby the calendar client agent. For example, such prior collaborationswith the user may involve social media posts, e-mail messages, instantmessages and previously scheduled calendar events with the user.Collaboration data is then extracted from the identified priorcollaborations by the calendar client agent. “Collaboration data,” asused herein, refers to data concerning the interaction between the userand others involving an activity (e.g., work activity, such as ameeting, social activity). Examples of such collaboration data includethe names of the participants/senders/attendees in the social mediaposts, e-mail messages, instant messages and previously scheduledcalendar events as well as the topics of such prior collaborations. Alist of actions may then be generated to be performed on a selectedscheduled event based on the extracted collaboration data. For example,the list of actions may include delegating the scheduled event toanother user who engaged in a prior collaboration with the userinvolving a topic within a threshold degree of similarity as the topicof the scheduled event. The generated list of actions to be performed onthe scheduled event is then presented to the user. In this manner, theuser is provided an opportunity to select an action (e.g., delegatingthe scheduled meeting to another user) to optimize the calendar toaddress situations, such as having an excessive number of scheduledevents over a period of time, an overlap of scheduled events over aperiod of time, a duplicate scheduled event, scheduling a vacationduring a time in which events have previously been scheduled, having anexcessive amount of work to be accomplished, etc.

In the following description, numerous specific details are set forth toprovide a thorough understanding of the present invention. However, itwill be apparent to those skilled in the art that the present inventionmay be practiced without such specific details. In other instances,well-known circuits have been shown in block diagram form in order notto obscure the present invention in unnecessary detail. For the mostpart, details considering timing considerations and the like have beenomitted inasmuch as such details are not necessary to obtain a completeunderstanding of the present invention and are within the skills ofpersons of ordinary skill in the relevant art.

Referring now to the Figures in detail, FIG. 1 illustrates acommunication system 100 for practicing the principles of the presentinvention in accordance with an embodiment of the present invention.Communication system 100 includes computing devices 101A-101C(identified as “Computing Device A,” “Computing Device B,” and“Computing Device C,” respectively, in FIG. 1) connected to a server 102via a network 103. Computing devices 101A-101C may collectively orindividually be referred to as computing devices 101 or computing device101, respectively. It is noted that both computing devices 101 and theusers of computing devices 101 may be identified with element number101.

Computing device 101 may be any type of computing device (e.g., portablecomputing unit, Personal Digital Assistant (PDA), smartphone, laptopcomputer, mobile phone, navigation device, game console, desktopcomputer system, workstation, Internet appliance and the like)configured with the capability of connecting to network 103 andconsequently communicating with other computing devices 101 and server102. Computing device 101 may be configured to send and receivetext-based messages in real-time during an instant messaging session.Any user of computing devices 101 may be the creator or initiator of aninstant message (message in instant messaging) and any user of computingdevices 101 may be a recipient of an instant message. Furthermore,computing device 101 may be configured to send out calendar appointmentsor meeting notices/invitations to other computing devices 101 using acalendar application via network 103. Any user of computing devices 101may be the creator or initiator of a meeting invitation and any user ofcomputing devices 101 may be a recipient of a meeting invitation.Similarly, any user of computing devices 101 may be the creator orinitiator of an e-mail message and any user of computing devices 101 maybe a recipient of an e-mail message. A description of the hardwareconfiguration of computing device 101 is provided below in connectionwith FIG. 2.

Network 103 may be, for example, a local area network, a wide areanetwork, a wireless wide area network, a circuit-switched telephonenetwork, a Global System for Mobile Communications (GSM) network,Wireless Application Protocol (WAP) network, a WiFi network, an IEEE802.11 standards network, various combinations thereof, etc. Othernetworks, whose descriptions are omitted here for brevity, may also beused in conjunction with system 100 of FIG. 1 without departing from thescope of the present invention.

In communication system 100, computing devices 101A-101C include asoftware agent, referred to herein as an Instant Messaging (IM) client104A-104C, respectively. Instant messaging clients 104A-104C maycollectively or individually be referred to as instant messaging clients104 or instant messaging client 104, respectively. Furthermore, server102 includes a software agent, referred to herein as the InstantMessaging (IM) server 105. IM client 104 provides the functionality tosend and receive instant messages. As messages are received, IM client104 presents the messages to the user in a dialog window (or IM window).Furthermore, IM client 104 provides the functionality for computingdevice 101 to connect to the IM server 105 which provides thefunctionality of distributing the instant messages to the IM clients 104associated with each of the sharing users.

Computing devices 101A-101C may further include a software agent,referred to herein as a calendar client agent 106A-106C, respectively.Calendar client agents 106A-106C may collectively or individually bereferred to as calendar client agents 106 or calendar client agent 106,respectively. Furthermore, server 102 may include a software agent,referred to herein as the calendar management agent 107. Calendarmanagement agent 107 interfaces with calendar client agent 106 topresent meeting invitations to computing devices 101. Calendar clientagent 106 is configured to display the received meeting invitation aswell as display calendar schedule information on the client device's 101calendar user interface. Furthermore, calendar client agent 106 isconfigured to assist the user in managing a calendar application asdiscussed further below in connection with FIGS. 3-5.

Furthermore, computing devices 101A-101C may include a software agent,referred to herein as an e-mail client agent 108A-108C, respectively.E-mail client agents 108A-108C may collectively or individually bereferred to as e-mail client agents 108 or e-mail client agent 108,respectively. Furthermore, server 102 may include a software agent,referred to herein as the e-mail server agent 109. E-mail client agent108 enables the user of computing device 101 to create, send and receivee-mails. E-mail server agent 109 is configured to receive e-mailmessages from computing devices 101 and distribute the received e-mailmessages among the one or more computing devices 101.

While the preceding discusses each computing device 101 as including anIM client 104, a calendar client agent 106 and an e-mail client agent108, each computing device 101 may not necessarily include each of thesesoftware agents, but only a subset of these software agents.Furthermore, while the preceding discusses a single server 102 includingthe software agents, such as IM server 105, calendar management agent107 and e-mail server agent 109, multiple servers may be used toimplement these services. Furthermore, each server 102 may notnecessarily be configured to include all of these software agents, butonly a subset of these software agents.

System 100 further includes a social network server 110, which may be aweb server configured to offer a social networking and/or microbloggingservice, enabling users of computing devices 101 to send and read otherusers' posts. “Posts,” as used herein, include any one or more of thefollowing: text (e.g., comments, sub-comments and replies), audio, videoimages, etc. Social network server 110 is connected to network 103 bywire or wirelessly. While FIG. 1 illustrates a single social networkserver 110, it is noted for clarity that multiple servers may be used toimplement the social networking and/or microblogging service.

System 100 is not to be limited in scope to any one particular networkarchitecture. System 100 may include any number of computing devices101, servers 102, networks 103 and social network servers 110.

Referring now to FIG. 2, FIG. 2 illustrates a hardware configuration ofcomputing device 101 (FIG. 1) which is representative of a hardwareenvironment for practicing the present invention. Referring to FIG. 2,computing device 101 has a processor 201 coupled to various othercomponents by system bus 202. An operating system 203 runs on processor201 and provides control and coordinates the functions of the variouscomponents of FIG. 2. An application 204 in accordance with theprinciples of the present invention runs in conjunction with operatingsystem 203 and provides calls to operating system 203 where the callsimplement the various functions or services to be performed byapplication 204. Application 204 may include, for example, a calendarapplication as well as calendar client agent 106 (FIG. 1) for assistingthe user in managing a calendar application as discussed further belowin connection with FIGS. 3-5.

Referring again to FIG. 2, read-only memory (“ROM”) 205 is coupled tosystem bus 202 and includes a basic input/output system (“BIOS”) thatcontrols certain basic functions of computing device 101. Random accessmemory (“RAM”) 206 and disk adapter 207 are also coupled to system bus202. It should be noted that software components including operatingsystem 203 and application 204 may be loaded into RAM 206, which may becomputing device's 101 main memory for execution. Disk adapter 207 maybe an integrated drive electronics (“IDE”) adapter that communicateswith a disk unit 208, e.g., disk drive.

Computing device 101 may further include a communications adapter 209coupled to bus 202. Communications adapter 209 interconnects bus 202with an outside network (e.g., network 103 of FIG. 1) thereby enablingcomputing device 101 to communicate with other computing devices 101,server 102 and social network server 110.

I/O devices may also be connected to computing device 101 via a userinterface adapter 210 and a display adapter 211. Keyboard 212, mouse 213and speaker 214 may all be interconnected to bus 202 through userinterface adapter 210. A display monitor 215 may be connected to systembus 202 by display adapter 211. In this manner, a user is capable ofinputting to computing device 101 through keyboard 212 or mouse 213 andreceiving output from computing device 101 via display 215 or speaker214. Other input mechanisms may be used to input data to computingdevice 101 that are not shown in FIG. 2, such as display 215 havingtouch-screen capability and keyboard 212 being a virtual keyboard.Computing device 101 of FIG. 2 is not to be limited in scope to theelements depicted in FIG. 2 and may include fewer or additional elementsthan depicted in FIG. 2.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, configuration data for integrated circuitry, oreither source code or object code written in any combination of one ormore programming languages, including an object oriented programminglanguage such as Smalltalk, C++, or the like, and procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The computer readable program instructions may executeentirely on the user's computer, partly on the user's computer, as astand-alone software package, partly on the user's computer and partlyon a remote computer or entirely on the remote computer or server. Inthe latter scenario, the remote computer may be connected to the user'scomputer through any type of network, including a local area network(LAN) or a wide area network (WAN), or the connection may be made to anexternal computer (for example, through the Internet using an InternetService Provider). In some embodiments, electronic circuitry including,for example, programmable logic circuitry, field-programmable gatearrays (FPGA), or programmable logic arrays (PLA) may execute thecomputer readable program instructions by utilizing state information ofthe computer readable program instructions to personalize the electroniccircuitry, in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a computer, or other programmable data processing apparatusto produce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks. These computerreadable program instructions may also be stored in a computer readablestorage medium that can direct a computer, a programmable dataprocessing apparatus, and/or other devices to function in a particularmanner, such that the computer readable storage medium havinginstructions stored therein comprises an article of manufactureincluding instructions which implement aspects of the function/actspecified in the flowchart and/or block diagram block or blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the blocks may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be accomplished as one step, executed concurrently,substantially concurrently, in a partially or wholly temporallyoverlapping manner, or the blocks may sometimes be executed in thereverse order, depending upon the functionality involved. It will alsobe noted that each block of the block diagrams and/or flowchartillustration, and combinations of blocks in the block diagrams and/orflowchart illustration, can be implemented by special purposehardware-based systems that perform the specified functions or acts orcarry out combinations of special purpose hardware and computerinstructions.

As stated in the Background section, calendaring systems, in thesimplest form, help users to organize their time. Additionally,calendaring systems may be used to schedule meetings, appointments,vacations or other types of calendar events or activities. However,users may have difficulty in managing their calendar, which may includenumerous meetings, activities, etc. At times, some of these scheduledevents may overlap other scheduled events. Furthermore, some of thesescheduled events may even be duplicates. As a result, users may have tospend time in determining how to address the overlapped or duplicatescheduled events resulting in loss of time and frustration. Furthermore,if a user desires to take a vacation but there are numerous previouslyscheduled events during the time the user desires to take a vacation,then the user will have to spend time in resolving the conflictsresulting in further loss of time and frustration. Currently,calendaring systems do not assist the user in managing the user'scalendar to address such situations.

The principles of the present invention provide a means for assistingthe user in managing a calendar application to address such situationsas discussed below in connection with FIGS. 3-5. FIG. 3 is a flowchartof a method for assisting the user in managing a calendar application.FIG. 4 illustrates multiple overlapped scheduled events. FIG. 5illustrates presenting to the user of the calendar application theoption of delegating a scheduled event to another user.

As stated above, FIG. 3 is a flowchart of a method 300 for assistinguser 101 (FIG. 1) in managing a calendar application in accordance withan embodiment of the present invention.

Referring to FIG. 3, in conjunction with FIGS. 1-2, in step 301, adetermination is made by calendar client agent 106 as to whether thereis a need to optimize the user's calendar. In one embodiment, such adetermination is made by calendar client agent 106 obtaining calendarinformation from the user's calendar application (e.g., Google®Calendar) via the calendar application's application programminginterface (API).

For example, calendar client agent 106 may determine that there is aneed to optimize the user's calendar based on the number of scheduledevents (e.g., scheduled meetings, scheduled activities, scheduledappointments, scheduled vacations) exceeding a threshold number over aperiod of time. In another example, calendar client agent 106 maydetermine that there is a need to optimize the user's calendar based ondetecting an overlap of scheduled events over a period of time. In afurther example, calendar client agent 106 may determine that there is aneed to optimize the user's calendar based on detecting a vacation. Inanother example, calendar client agent 106 may determine that there is aneed to optimize the user's calendar based on detecting a duplicatescheduled event. In a further example, calendar client agent 106 maydetermine that there is a need to optimize the user's calendar based ona metric (commonly referred to as “velocity”) for how much work isexpected to be accomplished for the user (or an organization, group orteam involving the user) over a period of time exceeding a thresholdnumber.

If a need has not been identified to optimize the user's calendar, thencalendar client agent 106 continues to determine whether there is a needto optimize the user's calendar in step 301.

If, however, a need has been identified to optimize the user's calendar,then, in step 302, calendar client agent 106 receives or identifies aperiod of time to optimize the calendar. In one embodiment, calendarclient agent 106 receives a period of time from the user via a userinterface of computing device 101. In one embodiment, calendar clientagent 106 determines the period of time to optimize the calendar basedon the period of time calendar client agent 106 determined that a needexisted to optimize the calendar as discussed above in connection withstep 301. For example, calendar client agent 106 may have detectedoverlapped scheduled events over a four hour window of time. In anotherexample, calendar client agent 106 may have detected a scheduledvacation for this coming Monday. Such period of times may correspond tothe period of time to optimize the calendar.

In step 303, calendar client agent 106 selects all the scheduled eventsin the calendar during the period of time. As discussed above, calendarclient agent 106 may extract the calendar information (e.g., scheduledevents over a period of time) from the user's calendar application(e.g., Google® Calendar) via the calendar application's applicationprogramming interface (API). For example, calendar client agent 106 mayselect all the scheduled events during a three hour window of timeinvolving overlapped scheduled events as shown in FIG. 4.

FIG. 4 illustrates multiple overlapped scheduled events in accordancewith an embodiment of the present invention. Referring to FIG. 4, userinterface 400 (displayed on the user interface of computing device 101)illustrates five overlapped scheduled events (e.g., meetings). Forexample, meeting 1 is scheduled from 9:00-11:00, meeting 2 is scheduledfrom 9:00-11:30, meeting 3 is scheduled from 9:30-10:00, meeting 4 isscheduled from 10:00-10:30 and meeting 5 is scheduled from 11:00-12:00.These scheduled events are selected to be optimized by calendar clientagent 106 due to the fact that their scheduled times overlap oneanother.

Returning to FIG. 3, in conjunction with FIGS. 1-2 and 4, in step 304,calendar client agent 106 extracts the attendees, topics and flags, ifany, for each selected scheduled event during the period of timeobtained in step 302. Attendees, as used herein, refer to those who arepresent at an event, meeting, etc., or at a particular place.

In one embodiment, the attendees (e.g., invitees) for each selectedscheduled event are extracted from the calendar information obtainedfrom the user's calendar application (e.g., Google® Calendar) via thecalendar application's application programming interface (API). Suchattendees may include those that are required to attend the scheduledevent as well as those that are optionally invited to attend, such asvia the carbon copy option, or are just informed, such as via the blindcarbon copy option.

In one embodiment, the topic is extracted for each selected scheduledevent using natural language processing. For example, calendar clientagent 106 may utilize natural language processing to identify keywordsin the description of the scheduled event (e.g., meeting) obtained fromthe calendar information extracted from the user's calendar application.For instance, if the description of meeting 1 of FIG. 4 is“teleconference call with Examiner regarding patent applicationinvolving references teaching growing crystalline semiconductor oxidethin films on a substrate,” then calendar client agent 106 may identifykeywords, such as “teleconference call with Examiner,” “regarding patentapplication” and “growing . . . thin films on a substrate” using naturallanguage processing to identify topics, such as teleconference call withExaminer, patent application and growing thin films on a substrate. Inone embodiment, the keywords may be any natural language element.

Furthermore, in one embodiment, calendar client agent extracts the flags(e.g., confidential, personal), if any, for each selected scheduledevent from the calendar information obtained from the user's calendarapplication (e.g., Google® Calendar) via the calendar application'sapplication programming interface (API). In one embodiment, appropriateaction is taken by client calendar agent 106 in response to identifyingparticular flags (e.g., confidential) that indicate special user action.For example, a confidential meeting will only be recommended to bereassigned to other users who are authorized to participate in theconfidential meeting in attempting to optimize the user's calendar asdiscussed below. In another example, a flag may indicate restrictions inforwarding or delegating the scheduled event. In another example, a flagmay indicate processing restrictions, such as restrictions in processingcalendar requests.

In step 305, calendar client agent 106 identifies prior collaborationswith user 101 (user of the calendar application) involving the extractedattendees and/or topics of the selected scheduled events. In oneembodiment, such prior collaborations with user 101 involve social mediaposts, e-mail messages, instant messages and previously scheduledcalendar events with user 101.

In step 306, calendar client agent 106 extracts collaboration data fromthe identified prior collaborations. “Collaboration data,” as usedherein, refers to data concerning the interaction between user 101 andothers involving an activity (e.g., work activity, such as a meeting,social activity). Examples of such collaboration data include the namesof the participants/senders/attendees in the social media posts, e-mailmessages, instant messages and previously scheduled calendar events aswell as the topics of such prior collaborations.

In one embodiment, calendar client agent 106 utilizes natural languageprocessing to identify topics of interest for social media posts, e-mailmessages, instant messages, etc. received by user 101. For instance,calendar client agent 106 using natural language processing may identifykeywords (e.g., “growing thin films on a substrate”) in an e-mailmessage regarding a patent application prosecuted by user 101.

In another embodiment, calendar client agent 106 utilizes naturallanguage processing to identify topics of interest in previouslyscheduled calendar events with user 101.

In another embodiment, calendar client agent 106 extracts the names ofthe participants/senders/attendees in the social media posts, e-mailmessages, instant messages and previously scheduled calendar events.

For one of the scheduled events out of the selected scheduled eventsthat needs to be addressed during the period of time obtained in step302, in step 307, calendar client agent 106 generates a list of actionsto be performed on the scheduled event based on the extractedcollaboration data. For example, the list of actions may includedelegating the scheduled event to another user 101 (e.g., an attendee ofthe scheduled event) who engaged in a prior collaboration with user 101(user of the calendar) involving a topic within a threshold degree ofsimilarity as the topic of the scheduled event. For instance, clientcalendar agent 106 may determine that a second user 101 sent an e-mailmessage to a first user 101 involving the topic of growing thin films ona substrate. If client calendar agent 106 had previously determined thatthe first user 101 has a meeting involving a teleconference with anExaminer regarding references involving growing thin films on asubstrate and the scheduled time of such a meeting overlaps anotherscheduled meeting, then client calendar agent 106 may recommend todelegate the scheduled meeting with the Examiner to the second user 101as discussed further below.

In one embodiment, the topic of the scheduled event and the topic of theprior collaboration (e.g., prior e-mail correspondence) are determinedusing natural language processing. In one embodiment, the degree ofsimilarity of the topic of the scheduled event and the topic of theprior collaboration (e.g., prior e-mail correspondence) is based, atleast in part, on how close in meaning are the topics of the scheduledevent and the prior collaboration. In one embodiment, the threshold usedin the threshold degree of similarity is user provided.

In another example, the list of actions may include cancelling thescheduled event, declining the scheduled event, delegating the scheduledmeeting to a team, reducing a number of attendees of the scheduledevent, increasing a number of attendees of the scheduled event,reassigning chairmanship (organizer) of the scheduled event, etc.

In one embodiment, another user 101 (e.g., user 101B) may only beselected to delegate a scheduled event for user 101 (e.g., user 101A) ifthat user 101 (e.g., user 101B) had a threshold number of interactionswith user 101 (e.g., user 101A) involving the topic of the scheduledevent.

In one embodiment, another user 101 (e.g., user 101A) may only beselected to delegate a scheduled event for user 101 (e.g., user 101A) ifthat user 101 (e.g., user 101B) is a member of the same team, group,etc. as user 101 (e.g., user 101A).

In step 308, calendar client agent 106 presents the generated list ofactions to be performed on a scheduled event (e.g., meeting 1 of FIG. 4)to user 101 (user of the calendar application).

In step 309, a determination is made by calendar client agent 106 as towhether it received a selection of an action from the list of actionsfrom user 101.

If calendar client agent 106 does not receive a selection of an actionfrom the list of actions from user 101, then, in step 310, calendarclient agent 106 does not perform an action on the scheduled event.

In step 311, a determination is made by calendar client agent 106 as towhether any other scheduled events (out of the selected scheduledevents) need to be addressed. For example, referring to FIG. 4, ifmeeting 1 was the only scheduled event that was addressed, then theother scheduled events (e.g., meetings 2-5) with a scheduled time thatoverlap one another still need to be addressed.

If there are other scheduled events that need to be addressed, thencalendar client agent 106 generates a list of actions to be performed ona scheduled event out of the selected scheduled events based on theextracted collaboration data in step 307.

If, however, there are no other scheduled events that need to beaddressed, then calendar client agent 106 continues to determine whetherthere is a need to optimize the user's calendar in step 301.

Returning to step 309, if, however, calendar client agent 106 received aselection of an action from the list of actions from user 101, then, instep 312, calendar client agent 106 performs the selected action on thescheduled event as illustrated in FIG. 5.

FIG. 5 illustrates presenting to user 101 (user of the calendarapplication) on user interface 500 (displayed on the user interface ofcomputing device 101) the option of delegating a scheduled event toanother user 101 in accordance with an embodiment of the presentinvention.

As illustrated in FIG. 5, user 101 is presented an option with assigningor delegating meeting 1 to a different user (e.g., user A) to addressthe situation where meeting 1 is scheduled during a time that othermeetings were scheduled as discussed in FIG. 4.

Referring to the example discussed above, if client calendar agent 106had previously determined that the first user 101 has a meetinginvolving a teleconference with an Examiner regarding referencesinvolving growing thin films on a substrate and the scheduled time ofsuch a meeting overlaps another scheduled meeting, then client calendaragent 106 may recommend to delegate the scheduled meeting with theExaminer to the second user 101. In such a situation, client calendaragent 106 may recommend to the first user 101 to delegate the scheduledmeeting to the second user 101, such as shown in FIG. 5.

As illustrated in FIG. 5, in one embodiment, user 101 is provided theoption of accepting or declining (see accept button 501 and declinebutton 502, respectively, in FIG. 5) the option of assigning ordelegating meeting 1 to a different user as shown in FIG. 5.

In one embodiment, if user 101 selects the option of delegating thescheduled event to another user, such as via selecting accept button501, then client calendar agent 106 forwards an invitation to that userto delegate that scheduled event.

Other actions that may be performed to optimize the calendar includecancelling the scheduled event, declining the scheduled event,delegating the scheduled meeting to a team, reducing a number ofattendees of the scheduled event, increasing a number of attendees ofthe scheduled event, reassigning chairmanship (organizer) of thescheduled event, etc. By implementing these actions, user 101 will beable to optimize the calendar to address situations, such as having anexcessive number of scheduled events over a period of time, an overlapof scheduled events over a period of time, a duplicate scheduled event,scheduling a vacation during a time in which events have previously beenscheduled, having an excessive amount of work to be accomplished, etc.By using computing technology to identify such situations and to utilizecollaboration data from prior collaborations with the user, variousactions may be proposed to the user to address such situations. In thismanner, the functionality of calendaring systems is improved by allowingthe user to better manage the user's scheduled events in the user'scalendar.

Returning to FIG. 3, in conjunction with FIGS. 1-2 and 4-5, afterperforming the selected action on the scheduled event, calendar clientagent 106 determines whether any other scheduled events (out of theselected scheduled events) need to be addressed in step 311.

The descriptions of the various embodiments of the present inventionhave been presented for purposes of illustration, but are not intendedto be exhaustive or limited to the embodiments disclosed. Manymodifications and variations will be apparent to those of ordinary skillin the art without departing from the scope and spirit of the describedembodiments. The terminology used herein was chosen to best explain theprinciples of the embodiments, the practical application or technicalimprovement over technologies found in the marketplace, or to enableothers of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A method for managing a calendar application, themethod comprising: identifying a need to optimize a calendar, whereinsaid need is identified by a calendar client agent obtaining calendarinformation from a user's calendar information via a calendarapplication's application programming interface; receiving oridentifying a period of time to optimize said calendar in response toidentifying said need to optimize said calendar, wherein said period oftime is determined based on a period of time said calendar client agentdetermined that a need existed to optimize said calendar; selecting allscheduled events in said calendar during said period of time; extractingattendees, topics and flags for each selected scheduled event duringsaid period of time; identifying prior collaborations with a user ofsaid calendar involving said extracted attendees and topics of saidselected scheduled events; extracting collaboration data from saididentified prior collaborations, wherein said collaboration datacomprises data concerning an interaction between said user and othersinvolving an activity, wherein said collaboration data comprises namesof participants, senders and attendees in social media posts, e-mailmessages, instant messages and previously scheduled calendar events aswell as topics of said identified prior collaborations; generating alist of actions to be performed on a scheduled event of said selectedscheduled events based on said extracted collaboration data; presentingsaid generated list of actions to said user of said calendar to beperformed on said scheduled event to said user; determining whether saiduser selected an action from said list of actions; and performing anaction on said scheduled event in response to said user selecting saidaction from said list of actions thereby improving a functionality ofcalendaring systems by allowing said user to better manage said users'scheduled events in said user's calendar.
 2. The method as recited inclaim 1, wherein said prior collaborations involving said extractedattendees and topics of said selected scheduled events comprise socialmedia posts, e-mail messages, instant messages and previously scheduledcalendar events.
 3. The method as recited in claim 2, wherein saidcalendar client agent utilizes natural language processing to identifytopics of interest in said previously scheduled calendar events.
 4. Themethod as recited in claim 1, wherein said list of actions comprisesdelegating said scheduled event to a second user who engaged in a priorcollaboration with said user of said calendar involving a topic of saidscheduled event within a threshold degree of similarity as a topic ofsaid scheduled event, wherein said degree of similarity is based on howclose in meaning said topic is to said topic of said scheduled event,wherein said threshold degree of similarity is user provided, whereinsaid second user is selected to delegate said scheduled event inresponse to having a threshold number of interactions with said userinvolving said topic of said scheduled event.
 5. The method as recitedin claim 1 further comprising: recommending to delegate a scheduledmeeting to a second user; providing an option to said user of acceptingor declining said delegation of said scheduled meeting to said seconduser via an accept button or a decline button, respectively; receivingfrom said user an indication to delegate said scheduled event to saidsecond user via a selection of said accept button; and forwarding aninvitation to said second user to delegate said scheduled event.
 6. Themethod as recited in claim 1, wherein said list of actions comprisescancelling said scheduled event, declining said scheduled event,delegating said scheduled meeting to a team, reducing a number ofattendees of said scheduled event, increasing a number of attendees ofsaid scheduled event, and reassigning chairmanship of said scheduledevent.
 7. The method as recited in claim 1, wherein said flags indicaterestrictions in forwarding or delegating a scheduled event or indicaterestrictions in processing calendar requests.
 8. The method as recitedin claim 1, wherein said need to optimize said calendar is identifiedbased on a number of scheduled events exceeding a threshold number oversaid period of time, an overlap of scheduled events over said period oftime, a detection of a vacation, a detection of a duplicate scheduledevent and a metric for how much work is expected to be accomplished foran organization, group, team or individual over said period of timeexceeding a threshold number.
 9. A computer program product for managinga calendar application, the computer program product comprising acomputer readable storage medium having program code embodied therewith,the program code comprising the programming instructions for:identifying a need to optimize a calendar, wherein said need isidentified by a calendar client agent obtaining calendar informationfrom a user's calendar information via a calendar application'sapplication programming interface; receiving or identifying a period oftime to optimize said calendar in response to identifying said need tooptimize said calendar, wherein said period of time is determined basedon a period of time said calendar client agent determined that a needexisted to optimize said calendar; selecting all scheduled events insaid calendar during said period of time; extracting attendees, topicsand flags for each selected scheduled event during said period of time;identifying prior collaborations with a user of said calendar involvingsaid extracted attendees and topics of said selected scheduled events;extracting collaboration data from said identified prior collaborations,wherein said collaboration data comprises data concerning an interactionbetween said user and others involving an activity, wherein saidcollaboration data comprises names of participants, senders andattendees in social media posts, e-mail messages, instant messages andpreviously scheduled calendar events as well as topics of saididentified prior collaborations; generating a list of actions to beperformed on a scheduled event of said selected scheduled events basedon said extracted collaboration data; presenting said generated list ofactions to said user of said calendar to be performed on said scheduledevent to said user; determining whether said user selected an actionfrom said list of actions; and performing an action on said scheduledevent in response to said user selecting said action from said list ofactions thereby improving a functionality of calendaring systems byallowing said user to better manage said users' scheduled events in saiduser's calendar.
 10. The computer program product as recited in claim 9,wherein said prior collaborations involving said extracted attendees andtopics of said selected scheduled events comprise social media posts,e-mail messages, instant messages and previously scheduled calendarevents.
 11. The computer program product as recited in claim 10, whereinsaid calendar client agent utilizes natural language processing toidentify topics of interest in said previously scheduled calendarevents.
 12. The computer program product as recited in claim 9, whereinsaid list of actions comprises delegating said scheduled event to asecond user who engaged in a prior collaboration with said user of saidcalendar involving a topic of said scheduled event within a thresholddegree of similarity as a topic of said scheduled event, wherein saiddegree of similarity is based on how close in meaning said topic is tosaid topic of said scheduled event, wherein said threshold degree ofsimilarity is user provided, wherein said second user is selected todelegate said scheduled event in response to having a threshold numberof interactions with said user involving said topic of said scheduledevent.
 13. The computer program product as recited in claim 9, whereinthe program code further comprises the programming instructions for:recommending to delegate a scheduled meeting to a second user; providingan option to said user of accepting or declining said delegation of saidscheduled meeting to said second user via an accept button or a declinebutton, respectively; receiving from said user an indication to delegatesaid scheduled event to said second user via a selection of said acceptbutton; and forwarding an invitation to said second user to delegatesaid scheduled event.
 14. The computer program product as recited inclaim 9, wherein said list of actions comprises cancelling saidscheduled event, declining said scheduled event, delegating saidscheduled meeting to a team, reducing a number of attendees of saidscheduled event, increasing a number of attendees of said scheduledevent, and reassigning chairmanship of said scheduled event.
 15. Thecomputer program product as recited in claim 9, wherein said flagsindicate restrictions in forwarding or delegating a scheduled event orindicate restrictions in processing calendar requests.
 16. The computerprogram product as recited in claim 9, wherein said need to optimizesaid calendar is identified based on a number of scheduled eventsexceeding a threshold number over said period of time, an overlap ofscheduled events over said period of time, a detection of a vacation, adetection of a duplicate scheduled event and a metric for how much workis expected to be accomplished for an organization, group, team orindividual over said period of time exceeding a threshold number.
 17. Asystem, comprising: a memory for storing a computer program for managinga calendar application; and a processor connected to the memory, whereinthe processor is configured to execute the program instructions of thecomputer program comprising: identifying a need to optimize a calendar,wherein said need is identified by a calendar client agent obtainingcalendar information from a user's calendar information via a calendarapplication's application programming interface; receiving oridentifying a period of time to optimize said calendar in response toidentifying said need to optimize said calendar, wherein said period oftime is determined based on a period of time said calendar client agentdetermined that a need existed to optimize said calendar; selecting allscheduled events in said calendar during said period of time; extractingattendees, topics and flags for each selected scheduled event duringsaid period of time; identifying prior collaborations with a user ofsaid calendar involving said extracted attendees and topics of saidselected scheduled events; extracting collaboration data from saididentified prior collaborations, wherein said collaboration datacomprises data concerning an interaction between said user and othersinvolving an activity, wherein said collaboration data comprises namesof participants, senders and attendees in social media posts, e-mailmessages, instant messages and previously scheduled calendar events aswell as topics of said identified prior collaborations; generating alist of actions to be performed on a scheduled event of said selectedscheduled events based on said extracted collaboration data; presentingsaid generated list of actions to said user of said calendar to beperformed on said scheduled event to said user; determining whether saiduser selected an action from said list of actions; and performing anaction on said scheduled event in response to said user selecting saidaction from said list of actions thereby improving a functionality ofcalendaring systems by allowing said user to better manage said users'scheduled events in said user's calendar.
 18. The system as recited inclaim 17, wherein said prior collaborations involving said extractedattendees and topics of said selected scheduled events comprise socialmedia posts, e-mail messages, instant messages and previously scheduledcalendar events.
 19. The system as recited in claim 18, wherein saidcalendar client agent utilizes natural language processing to identifytopics of interest in said previously scheduled calendar events.
 20. Thesystem as recited in claim 17, wherein said list of actions comprisesdelegating said scheduled event to a second user who engaged in a priorcollaboration with said user of said calendar involving a topic of saidscheduled event within a threshold degree of similarity as a topic ofsaid scheduled event, wherein said degree of similarity is based on howclose in meaning said topic is to said topic of said scheduled event,wherein said threshold degree of similarity is user provided, whereinsaid second user is selected to delegate said scheduled event inresponse to having a threshold number of interactions with said userinvolving said topic of said scheduled event, wherein the programinstructions of the computer program further comprise: recommending todelegate a scheduled meeting to a second user; providing an option tosaid user of accepting or declining said delegation of said scheduledmeeting to said second user via an accept button or a decline button,respectively; receiving from said user an indication to delegate saidscheduled event to said second user via a selection of said acceptbutton; and forwarding an invitation to said second user to delegatesaid scheduled event.